package com.book.lizhi.database;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;

import com.book.lizhi.util.FileUtil;

public class BitmapUtil {

	public static void saveBitmap(Bitmap bitmap, String name) throws IOException {
		DiskLruCache.Editor editor = FileUtil.getDiskLruCache().edit(name);
		OutputStream outputStream = editor.newOutputStream(0);
		bitmap.compress(Bitmap.CompressFormat.PNG, 50, outputStream);
		editor.commit();
		FileUtil.getDiskLruCache().flush();
	}

	public static Bitmap getBitmap(String name) {
		Bitmap bitmap = null;
		try {
			DiskLruCache.Snapshot snapshot = FileUtil.getDiskLruCache().get(name);
			if (snapshot != null) {
				InputStream inputStream = snapshot.getInputStream(0);
				bitmap = BitmapFactory.decodeStream(inputStream);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return bitmap;
	}

	public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) {

		Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
		Canvas canvas = new Canvas(output);

		final int color = 0xff424242;
		final Paint paint = new Paint();
		final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
		final RectF rectF = new RectF(rect);

		paint.setAntiAlias(true);
		canvas.drawARGB(0, 0, 0, 0);
		paint.setColor(color);
		canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

		paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
		canvas.drawBitmap(bitmap, rect, rect, paint);

		return output;
	}
}
